#ifndef _SERIALPORT_H_
#define _SERIALPORT_H_
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <errno.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include "../autoaim/data_pack/DataPack.h"

using namespace std;

#define PI 3.1416
//@brief:
//@brief:linux下的串口通信类，可以通过构造函数直接打开一个串口，并初始化（默认9600波特率，8位数据，无奇偶校验，1位停止位）
//             send()成员函数可以直接发送字符串，set_opt()更改参数。串口会在析构函数中自动关闭
//@example:Serialport exp("/dev/ttyUSB0");
//                  exp.set_opt(115200,8,'N',1);
//

class Serialport
{
public:
    int fd;
    char tmpchar[12];
    const char *buffer;
    unsigned char rData[255];

public:
    Serialport(string port); //定义Serialport类的成员函数，
    Serialport();
    ~Serialport();
    int open_port(string port);
    int set_opt(int nSpeed = 115200, int nBits = 8, char nEvent = 'N', int nStop = 1);
    void clear();
    bool send(char *str);
    bool sendAngle(float*angle);
    bool sendSpeed(float speedYaw, float speedPitch);
    bool sendXYZ(double *xyz);
    bool sendXY(double *xy);
    void readMode(int &carMode);
    bool readStatusTo(DataPack &datapack);
};

#endif
